package bootstrap

import (
	"fmt"
	"os"

	"github.com/spf13/viper"
)

type Config struct {
	Server struct {
		Port int
	}
	Database struct {
		Url      string
		User     string
		Password string
		Name     string
	}
	Minio struct {
		Endpoint  string
		AccessKey string
		SecretKey string
		Bucket    string
		UseSSL    bool
	}
}

var AppConfig Config

// InitConfig 读取配置文件
func InitConfig() {
	v := viper.New()

	// 从环境变量读取运行环境，默认 dev
	env := os.Getenv("APP_ENV")
	if env == "" {
		env = "dev"
	}

	// 优先从环境变量读取配置目录
	configPath := os.Getenv("CONFIG_PATH")
	if configPath == "" {
		configPath = "./configs"
	}

	v.SetConfigName("config." + env)
	v.SetConfigType("yaml")
	v.AddConfigPath(configPath)

	if err := v.ReadInConfig(); err != nil {
		panic(fmt.Errorf("读取配置文件失败: %w", err))
	}

	if err := v.Unmarshal(&AppConfig); err != nil {
		panic(fmt.Errorf("解析配置文件失败: %w", err))
	}

	fmt.Println("配置文件加载成功")
}
